﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
using EN = class_Entidad;

namespace class_DAO
{
    public class PRODUCTO_DAO
    {
        public static List<EN.PRODUCTO_EN> listaProducto(EN.PARAM_PRODUCTO_EN param)
        {
            List<EN.PRODUCTO_EN> Lista = new List<EN.PRODUCTO_EN>();
            SqlDataReader sdr;
            SqlConnection cnx = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlCNX"].ConnectionString);
            SqlCommand cmd = new SqlCommand("LISTA_PRODUCTO", cnx);
            try
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@vID_PRODUCTO", param.ID_PRODUCTO);
                cmd.Parameters.AddWithValue("@vNOM_PROD", param.NOM_PROD);
                cmd.Parameters.AddWithValue("@vID_TPROD", param.ID_TPROD);

                cnx.Open();
                sdr = cmd.ExecuteReader();
                while (sdr.Read() == true)
                {
                    EN.PRODUCTO_EN be_Busqueda = new EN.PRODUCTO_EN();
                    be_Busqueda.ID_PRODUCTO = sdr.GetInt32(0);
                    be_Busqueda.NOM_PROD = sdr.GetString(1);
                    be_Busqueda.MARCA = sdr.GetString(2);
                    be_Busqueda.DESCRIPCION = sdr.GetString(3);
                    be_Busqueda.ID_TPROD = sdr.GetInt32(4);
                    //be_Busqueda.EST_PROD = (be_Busqueda.EST_PROD == null) ? 0 : sdr.GetInt32(5);
                    be_Busqueda.EST_PROD =  sdr.GetInt32(5);
                    be_Busqueda.DES_EST_PROD = (be_Busqueda.EST_PROD == 1) ? "ACTIVO" : "INACTIVO";
                    Lista.Add(be_Busqueda);
                }
                sdr.Close();
                sdr.Dispose();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (cnx.State != ConnectionState.Closed)
                {
                    cnx.Close();
                }
            }
            return Lista;
        }

        /// <summary>
        /// Actualiza registro de Items
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public static int EditarProducto(EN.PRODUCTO_EN param)
        {
            int Accion = 0;
            SqlConnection cnx = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlCNX"].ConnectionString);
            SqlCommand cmd = new SqlCommand("UPD_PRODUCTO", cnx);

            try
            {
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter sqlPrm = new SqlParameter("@vID_PRODUCTO", SqlDbType.Int);
                sqlPrm.Value = param.ID_PRODUCTO;
                sqlPrm.Direction = ParameterDirection.Input;
                cmd.Parameters.Add(sqlPrm);

                SqlParameter sqlPrm2 = new SqlParameter("@vMARCA", SqlDbType.NVarChar);
                sqlPrm2.Value = param.MARCA;
                sqlPrm2.Direction = ParameterDirection.Input;
                cmd.Parameters.Add(sqlPrm2);

                SqlParameter sqlPrm3 = new SqlParameter("@vEST_PROD", SqlDbType.Int);
                sqlPrm3.Value = param.EST_PROD;
                sqlPrm3.Direction = ParameterDirection.Input;
                cmd.Parameters.Add(sqlPrm3);

                SqlParameter sqlPrm4 = new SqlParameter("@vID_TPROD", SqlDbType.Int);
                sqlPrm4.Value = param.ID_TPROD;
                sqlPrm4.Direction = ParameterDirection.Input;
                cmd.Parameters.Add(sqlPrm4);

                cnx.Open();
                cmd.ExecuteNonQuery();
                Accion = 1;
                cnx.Close();


            }
            catch (Exception ex)
            {
                cnx.Close();
                throw ex;
            }
            finally
            {
                if (cnx.State != ConnectionState.Closed)
                {
                    cnx.Close();
                }
            }
            return Accion;
        }

        public static List<EN.PRODUCTO_EN> listaProducto(EN.PRODUCTO_EN objItem)
        {
            //throw new NotImplementedException();
             List<EN.PRODUCTO_EN> Lista = new List<EN.PRODUCTO_EN>();
            SqlDataReader sdr;
            SqlConnection cnx = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlCNX"].ConnectionString);
            SqlCommand cmd = new SqlCommand("LISTA_PRODUCTO", cnx);
            try
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@vID_PRODUCTO", objItem.ID_PRODUCTO);
                cmd.Parameters.AddWithValue("@vID_TPROD", objItem.ID_TPROD);
                cmd.Parameters.AddWithValue("@vNOM_PROD", objItem.NOM_PROD);

                cnx.Open();
                sdr = cmd.ExecuteReader();
                while (sdr.Read() == true)
                {
                    EN.PRODUCTO_EN be_Busqueda = new EN.PRODUCTO_EN();
                    be_Busqueda.ID_PRODUCTO = sdr.GetInt32(0);
                    be_Busqueda.NOM_PROD = sdr.GetString(1);
                    be_Busqueda.MARCA = sdr.GetString(2);
                    be_Busqueda.DESCRIPCION = sdr.GetString(3);
                    be_Busqueda.ID_TPROD = sdr.GetInt32(4);
                    //be_Busqueda.EST_PROD = (be_Busqueda.EST_PROD == null) ? 0 : sdr.GetInt32(5);
                    be_Busqueda.EST_PROD =  sdr.GetInt32(5);
                    be_Busqueda.DES_EST_PROD = (be_Busqueda.EST_PROD == 1) ? "ACTIVO" : "INACTIVO";
                    Lista.Add(be_Busqueda);
                }
                sdr.Close();
                sdr.Dispose();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (cnx.State != ConnectionState.Closed)
                {
                    cnx.Close();
                }
            }
            return Lista;
        }

     
    public static List<EN.PRODUCTO_EN> listaProductoBuscar(EN.PRODUCTO_EN objItem)
        {
            //throw new NotImplementedException();
             List<EN.PRODUCTO_EN> Lista = new List<EN.PRODUCTO_EN>();
            SqlDataReader sdr;
            SqlConnection cnx = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlCNX"].ConnectionString);
            SqlCommand cmd = new SqlCommand("LISTA_PRODUCTO_BUSCAR", cnx);
            try
            {
                cmd.CommandType = CommandType.StoredProcedure;
                
                cmd.Parameters.AddWithValue("@vID_TPROD", objItem.ID_TPROD);
                cmd.Parameters.AddWithValue("@vNOM_PROD", objItem.NOM_PROD);

                cnx.Open();
                sdr = cmd.ExecuteReader();
                while (sdr.Read() == true)
                {
                    EN.PRODUCTO_EN be_Busqueda = new EN.PRODUCTO_EN();
                    be_Busqueda.ID_PRODUCTO = sdr.GetInt32(0);
                    be_Busqueda.NOM_PROD = sdr.GetString(1);
                    be_Busqueda.MARCA = sdr.GetString(2);
                    be_Busqueda.DESCRIPCION = sdr.GetString(3);
                    be_Busqueda.ID_TPROD = sdr.GetInt32(4);
                    //be_Busqueda.EST_PROD = (be_Busqueda.EST_PROD == null) ? 0 : sdr.GetInt32(5);
                    be_Busqueda.EST_PROD =  sdr.GetInt32(5);
                    be_Busqueda.DES_EST_PROD = (be_Busqueda.EST_PROD == 1) ? "ACTIVO" : "INACTIVO";
                    Lista.Add(be_Busqueda);
                }
                sdr.Close();
                sdr.Dispose();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (cnx.State != ConnectionState.Closed)
                {
                    cnx.Close();
                }
            }
            return Lista;
        }

        }
    
}
